Esta es la versión extensa de mi curriculum, dado que aquí no tengo restricciones de espacio o formato. Sin embargo, si lo que buscas es la versión breve y concisa de mi curriculum, puedes descargar la versión en pdf o visitar mi perfil de LinkedIN.

Contenido

Educación

Doctorado

Purdue University

Estudié un Doctorado en Tecnología en Purdue University. El programa se imparte en el Purdue Polytechnic Institute (antes era el College of Technology) que se encuentra en el campus principal en West Lafayette (Indiana, EUA).

Cada estudiante de doctorado pertenece a un departamento. Yo estuve en el departamento de Computer Graphics Technology. El plan de estudios del doctorado, requiere tomar clases de Estadística y de Metodología de la Investigación. Además, tomé clases de Graficación por Computadora, –dado que era mi área de investigación–, y tomé materias optativas de Matemáticas y de Ciencias de la Computación.

Durante mi doctorado, mi asesor y mentor fue el Dr. Bedrich Benes. En ese periodo fuí miembro del HPCG lab (que ahora forma parte del departamento de Ciencias de la Computación) donde hice investigación en Graficación por Computadora y en Manufactura Aditiva (mejor conocida como 3D printing) lo que culminó en varias publicaciones.

Maestría

IIMAS UNAM

Estudié la maestría en Ciencias de la Computación en la Universidad Nacional Autónoma de México (UNAM). El programa de maestría tiene varias sedes. Yo pasé la mayoría de mi tiempo en el Instituto de Investigación en Matemáticas Aplicadas y Sistemas (IIMAS), que se encuentra en el campus principal en Ciudad Universitaria (CDMX, México).

Después de terminar el tronco común, cada estudiante escoge un área de investigación para enfocarse. Yo me decidí por el área de Señales, Imágenes y Ambientes Virtuales, donde tomé varias clases de Procesamiento de Imágenes Digitales y Graficación por Computadora.

Mi asesor de tesis fue el Dr. Edgar Garduño Ángeles, e hice una tesis que se encuentra en la intersección del Procesamiento de Imágenes Digitales, la Visualización Científica y las Gráficas por Computadora.

Licenciatura

FES Acatlan UNAM

Hice mis estudios de licenciatura en la FES Acatlán, uno de los campus descentralizados de la UNAM. Estudié una licenciatura un tanto única: Matemáticas Aplicadas y Computación (o M@ como nos gusta llamarle).

En ese entonces, después del tronco común (seis semestres) entrabas a una pre-especialidad (los últimos tres semestres). Yo estudié la pre-especialidad de “Simulación y Análisis de Decisiones”, que consistía en estudiar Investigación de Operaciones. Hoy en día, casi se le podría llamar Ciencia de Datos (pero no me gusta ese nombre).

Decidí titularme por medio de una tesis. Mi asesor de tesis fue la Dra. María del Carmen Villar Patiño e hice una tesis acerca de una Simulación Basada en Física y de Graficación por Computadora.

Experiencia en la industria

Google

Googleplex

Empecé a trabajar en Google en Marzo del 2021 como Ingeniero de Soluciones para Stadia. Mi tarea principal era ayudar a los proveedores a traer su contenido (videojuegos) a la plataforma. Dado que mi formación es en Gráficas por Computadora, proveía soporte de DX11, DX12 y Vulkan. También contribuí en el backend y escribiendo ejemplos para Big Wheels, un framework gráfico que luego se volvió Open Source.

Stadia fue cancelado en Enero del 2023, y después de pasar por varios proyectos, me cambié a un puesto de Ingeniero de Software y me volví parte de la organización de Platforms and Ecosystems. En P&E, donde trabajo actualmente; contribuyo en darle forma a la visión de Google en XR.

Nvidia

Nvidia Endeavor

Después de graduarme del doctorado en Septiembre del 2017, me incorporé a Nvidia que me ayudó a mudarme a San Jose California (también conocido como Silicon Valley).

En Nvidia, fui Ingeniero de Software en el equipo de navegadores web, donde trabajé haciendo y diseñando algunos de los componentes web de ISAAC SDK. Luego me cambiaron al equipo del driver 3D de dispositivos móviles, donde hice trabajo de bajo nivel de OpenGL, trabajé en Safety para Automotive y di mis primeros pasos en Vulkan.

Tecnologia en Sistemas de Computo

WTC Mexico

Al terminar mis clases de licenciatura en 2005, entré a trabajar a Tecnologia en Sistemas de Computo (TSC) que es una consultoría de Software en la CDMX.

Empecé a trabajar en TSC sin tener mi título de licenciatura (algo de lo que me arrepiento hasta el día de hoy). Pero viendo el lado bueno, esta fue mi primera experiencia profesional. Empecé como becario y luego me cambiaron al área de QA. Trabajé en la migración de un sistema que estaba en Interbase+PowerHouse para actualizarlo a Oracle+Java.

Pasantias (internships)

Mientras estaba estudiando el doctorado, aproveché cada oportunidad disponible para hacer pasantías durante los trimestres de verano.

Adobe

Adobe oficina de  SF

Durante el verano del 2016, hice una pasantía en Adobe research con el laboratorio de Imágenes Procedurales (que ahora es parte del grupo de investigación en Gráficas). Sin embargo, estuve en la oficina de San Francisco.

Mi pasantía giró alrededor de un software para modelado que simulaba el proceso de hacer una escultura. Esta fue por mucho la pasantía más interesante que tuve. Implementé algunos algoritmos clásicos de gráficas (Ambient Occlusion, Shadow Mapping y PBR) usando un pipeline diferido por medio de C++ y OpenGL con GLSL.

Nvidia

Nvidia HQ

Mi primera pasantía en Nvidia fue en 2014 en el campus principal. Trabajé con el equipo del driver de DirectX, donde implementé un decodificador de video en el GPU usando lenguaje ensamblador. Esta fue mi primera oportunidad profesional para trabajar como ingeniero de Software en Silicon Valley.

Durante el verano de 2015, hice una segunda pasantía en Nvidia, y de nuevo estuve en el equipo del driver, pero esta vez en el driver de OpenGL. Estando ahí, trabajé en exponer algunas extensiones de OpenGL y en arreglar algunos bugs en la extensión de debug de OpenGL.

Experiencia Academica

Purdue

Knoy Hall Purdue

Mientras hacía mi doctorado, tuve que trabajar, primero como asistente de investigación (RA) y luego como ayudante de profesor (TA), ambos en el Instituto Politécnico de Purdue. Como RA, trabajé haciendo investigación en el laboratorio de HPCG, lo que culminó en mis publicaciones.

Como TA, ayudé en la impartición de cursos de Graficación por Computadora y de Programación para la carrera CGT. Trabajé haciendo cuestionarios y calificando tareas para cursos de desarrollo web (tanto front-end como back-end) y en “Computer Graphics programming”, que era mi favorita, porque enseñabamos OpenGL y GLSL.

Finalmente, también formé parte del Círculo de Artes Computacionales, donde tuve la oportunidad de colaborar con el Dr. Esteban García Bravo (también conocido como snebtor). Algunas de estas colaboraciones también culminaron en publicaciones.

Universidad Nacional Autónoma de México

En la UNAM, tuve la oportunidad de ser ayudante de profesor en la Facultad de Ciencias, docente de la FES Acatlán y asistente de investigación tanto en el IIMAS como en la Facultad de Ciencias.

FES Acatlán

FES Acatlan UNAM

Impartí dos cursos: Graficación por Computadora –que es mi favorito–, y Teoría de Gráficas. También diseñé el temario del curso de Graficación por Computadora.

Mientras estuve en la FESA, intenté hacer todo lo posible para ayudar y participé en todas las actividades que pude. Entre otras cosas: fui miembro del consejo técnico, contribuí a diseñar el plan de estudios de M@ y asesoré a estudiantes de primer año como mentor.

Facultad de Ciencias

Facultad de ciencias UNAM

Durante mi maestría fui ayudante de profesor en la Facultad de Ciencias en dos cursos. El primero: Programación Avanzada trataba sobre Programación Orientada a Objetos. El segundo: Geometría Moderna se trataba de hacer geometría usando sólo una regla y un compás. Geometría Moderna es un nombre curioso ya que es la forma en que se estudiaba la geometría en la antigua Grecia.

Antes de eso, también trabajé como asistente de laboratorio como parte de uno de los Macroproyectos de la UNAM (que estaba ubicado también en la Facultad de Ciencias) por unos meses entre 2006 y 2007. Mientras estuve ahí, me hice cargo de mantener nuestros repositorios de SVN y creé un sitio web usando una suite LAMP.

Instituto de Investigación en Matemáticas Aplicadas y Sistemas

IIMAS UNAM

Inmediatamente después de terminar mi maestría, el Departamento de Ciencias de la Computación del IIMAS me otorgó un puesto temporal como asistente de investigación. Trabajé con la Dra. María Elena Martínez Pérez donde contribuí a una investigación sobre segmentación de vasos sanguíneos a partir de imágenes de retina obtenidas con una cámara fondus (cámara de fondo de ojo), lo cual fue un proyecto muy divertido y difícil.

Habilidades de Computación

Lenguajes de programación

Dado que la mayor parte de mi vida profesional he sido ingeniero de software, tengo amplia experiencia en programación. Hoy en día me siento más cómodo usando C++, incluidas la mayoría de las funciones de C++11 y algunas de C++20. Dicho esto, soy un desarrollador competente en lenguajes similares como C#, Java o C (como en el estándar C19).

También tengo experiencia en el uso de lenguajes de programación con frameworks grandes como Python, Matlab, Qt (con C++) y R.

He pasado la mayor parte de mi vida profesional trabajando en sistemas operativos POSIX y me siento más cómodo en GNU/Linux. Pero también soy un desarrollador competente en un entorno Windows.

Como lenguaje para escribir shaders, siempre he preferido GLSL (ya sea con OpenGL o Vulkan). Sin embargo, conozco suficiente HLSL (con DX11 o DX12) para realizar la mayoría de las tareas gráficas.

Frameworks y APIs

Dado que mi enfoque ha sido el de programador de gráficos, normalmente uso la biblioteca GLTF para interactuar con el gestor de ventanas y diferentes bibliotecas (recientemente soy fan de Dear imgui) para crear UI para aplicaciones de gráficos.

También tengo experiencia en el uso de motores de videojuegos de alto nivel como Unity y Unreal, pero no soy un experto en ellos (todavia).

Finalmente, tengo experiencia moderada como desarrollador web usando PHP y ASP.NET MVC, en el backend con algunos conocimientos de Javascript, HTML y CSS para el front end. Y ahora un poco de Jekill, como puede verse en éste sitio.

Habilidades en Ingeniería de Software

Para el control de versiones, tengo experiencia trabajando con svn pero ahora solo uso git (mi favorito) o P4. Normalmente desarrollo usando el enfoque de Android, que incluye usar Gerrit para revisar y subir código. Sin embargo, me gusta usar Github para mis proyectos personales.

Normalmente trabajo en equipos pequeños que realizan desarrollo basado en sprints, y que reportan su progreso utilizando herramientas de SW y realizan reuniones periódicas. Estoy acostumbrado a escribir pruebas unitarias, realizar revisiones de código y presentar mi trabajo en reuniones.

También estoy acostumbrado a trabajar desde la oficina o desde casa. Esto significa que si alguno de nosotros está remoto, puedo mantener una comunicación constante con mi equipo mediante chat y VC. Si estamos en la oficina, me gusta platicar (incluso cuando soy un poco introvertido) e ir a comer con mis compañeros.